// 创建rudux 仓库

//配置数据的持久化效
import { persistReducer, persistStore } from "redux-persist";
//导入需要配置的数据源，可以选择，storage，cookie,session等
import storage from "redux-persist/lib/storage";


// 01：引入创建仓库的函数
import { legacy_createStore as createStore } from "redux";


// 02：创建初始数据
const defaultState = {
	acl:[]  // 当前用户对应的菜单数组，
}


// 03：创建reducer 纯函数

const reducer = (state = defaultState,action) => {
	if(action.type === 'updateAcl') {
		state.acl = action.payload
		return {
			...state,   // 保留原数据
		}
	}

	return state  // 没有匹配返回state数据
}



//定义配置的信息
const persitConfig = {
    key:"userAcl",
    storage:storage,
   // 如果不想将部分state持久化，可以将其放入黑名单(blacklist)中.黑名单是设置
//   blacklist: ['ll']
}
//创建持久化的配置persist的信息
const persist_reducers = persistReducer(persitConfig,reducer);

// 04：创建仓库
const store = createStore(
	persist_reducers,
	// 必须要加上一段插件的配置工具，才能在浏览器中使用redux扩展,才能看到redux中state数据.
    window.__REDUX_DEVTOOLS_EXTENSION__ && window.__REDUX_DEVTOOLS_EXTENSION__()
)

const persistor =  persistStore(store);


// 05：导出store
export { store, persistor };